package com.wsoft.sms.service;

import com.github.pagehelper.PageInfo;
import com.wsoft.sms.entity.SmsMessageEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wsoft.sms.query.message.MessageInsertQuery;
import com.wsoft.sms.query.message.MessageListQuery;
import com.wsoft.sms.query.message.MessageUpdateQuery;

import java.util.List;

/**
 * <p>
 * 消息表 服务类
 * </p>
 *
 * @author zhanggukai
 * @since 2025年01月02日 15:35:55
 */
public interface ISmsMessageService extends IService<SmsMessageEntity> {

    /**
     * 新增消息
     * @param query
     * @return boolean
     */
    boolean insert(MessageInsertQuery query);

    /**
     * 修改消息
     * @param query
     * @return boolean
     */
    boolean update(MessageUpdateQuery query);

    /**
     * 删除消息
     * @param id
     * @return boolean
     */
    boolean delete(Long id);

    /**
     * 获取消息
     * @param id
     * @return
     */
    SmsMessageEntity getMessage(Long id);

    /**
     * 用户获取消息
     * @param id
     * @return
     */
    SmsMessageEntity getMessageByMember(Long id);

    /**
     * web端分页查询消息
     * @param query
     * @return
     */
    PageInfo<SmsMessageEntity> pageMessage(MessageListQuery query);

    /**
     * 用户获取未读消息
     * @param query
     * @return
     */
    List<SmsMessageEntity> listUnRead(MessageListQuery query);

    /**
     * 发布消息
     * @param id
     * @return boolean
     */
    boolean release(Long id);

    /**
     * 撤销消息
     * @param id
     * @return boolean
     */
    boolean withdraw(Long id);

    /**
     * 一键已读
     * @return boolean
     */
    boolean allRead();

}
